MilkShape L3D Importer/Exporter Plug-Ins and CBN/HD Builder Plug-In, v0.97a beta (c) 2001 DragonZap, dragonzap1@aol.com These plug-ins for Milkshape are provided as-is, and I assume no responsibility whatsoever for any damage they may cause. I tried putting in basic range checking, but they may crash on bad files. And then again maybe they won't. HOW TO USE: 1. Put the included "msL3DImporter.dll", "msL3DExporter.dll", "msBWCCompiler.dll", "msHDDecompiler.dll", "FreeImag2.dll", and "msCPP.dll" files in your Milkshape program directory. (Overwriting the existing "msCPP.dll" of Milkshape 1.5.9 or earlier should be OK.) 2. Run Milkshape. You'll find them listed under the "Import," "Export," and "Tool" menus. Note that a registered version of MilkShape is NOT required to use the plug-ins (MilkShape doesn't provide any way for plug-ins to check to see if the copy is registered anyway) -- however, MilkShape has a 30-day trial period, and after that expires, NO plug-ins will work. What the plug-ins CAN do ------------------------ Import existing L3D models Allow you to export new meshes and/or skins for L3D models which can be used in-game Change some minor aspects of creatures, such as hair color and length, and tattoo positions. What the plug-ins CAN'T do -------------------------- Import animations Set eyeball and hair positions (they can be changed, but I don't know how they are determined just yet) Change the creature footprints Change the creature skeletons and animations Vertex blending Details ------- The import plug-in imports Black & White .L3D model files, although not perfectly. You'll get a mesh with UV coordinates, and you can get a skeleton with correct position information but lost rotation information. The problem is that Black & White models use transformation matrices to show off their bone positions, and such matrices also support scaling and skewing, which MilkShape does not. This makes proper import a bit difficult. Sorry. On the other hand, skeletons in L3D files which have been exported from MilkShape originally can be imported correctly without a problem. Alpha textures are extracted, but are assigned only if the L3D file says they are used. All textures are saved as .BMP files, currently. When creating a model to be used in-game, you will probably want to use an existing skeleton, since A) no .ANM importer/exporter has yet been written at the time of this writing, and B) you can use the existing animations of whatever model you intend to replace. To do this, you will want to import the existing skeleton using the "Import without rotation information" option to get the correct bone positions. Although you should be able to rename bones without problem, do not add/remove/rearrange the bones in any way, or this process may not work. Anyways, after you create your model, you can assign the bones to your vertices. When you go to export, make sure to select the "Use existing skeleton" option, and select the file you originally got the skeleton from. Due to some problems with MilkShape's texture filename handling, your model file, your original skeleton file, and all your texture files should probably be in the same directory, or you may find your exported model has no textures. Black & White uses 256x256 textures with RGBA4444 color format, which allows for 4096 colors and 16 alpha values. All colors will be quantized to fit this range. Valid image formats are any of those supported by the FreeImage library. (This is generally any of the ones MilkShape already supports, such as BMP, TGA, etc.) If an image is not 256x256 pixels, it will be scaled to fit. Thus, you should probably stick to 256x256 textures, lest you find your L3D files either suddenly become massive or your textures don't quite have the quality that you thought they did. I'm not clear on how Black & White determines eyeball or hair positions, (they're in the .CBN files, but I'm not sure what the exact meaning of the fields is) so those are not properly supported. Version history: 0.90 - First beta release 0.91 - Added support for texture extraction and assignment 0.95 - Fixed a few bugs, and released the exporter along with the importer 0.95a - Fixed a stupid mistake on my part; sorry about the last one, folks. ...but this is why it's still beta. 0.96 - Added support for preserving morph targets -- this means you can create models based on existing meshes which will work with the originals if you're so inclined. This also means you can replace individual models (rather than all seven for creatures) and make modifications to the hand meshes without the game crashing (as far as I can tell). 0.97 - Added minor support for modifying .CBN files, as well as some simple bone naming based on .CBN information. Different rendering modes are now supported for export. Also turned most of the strings in the DLLs to string tables, for those of you who know how to use resource editors and want to translate the plug-ins into your own native language. 0.97a - L3D Importer: More bones named automatically when the right .CBN file is used for import. L3D Exporter: Fixed a bug in exporting texture IDs for L3D files that were exported using another L3D file as a base. Added ability to replace only skins. BWC Compiler: Added lots more commands to .BWC files and removed the "hairinfo" command (obsolete). Added support for compiling .HD files. Added HD Decompiler.